package com.example.shiyansan.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class OrderVo {
        private String username;
        private Integer userId;// 用户
        private Integer orderId;
        private Double totalPrice;     // 订单总价
        private String status;        // 订单状态
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        private LocalDateTime createTime; // 创建时间
        private List<OrderDetailVo> details; // 订单明细列表

        // 内部类：订单明细VO
        @Data
        public static class OrderDetailVo {
                private Integer bookId;
                private Integer orderId;

                private String bookName;  // 书名
                private Integer quantity; // 数量
                private Double price;     // 单价
        }

        //TODO Jackson序列化所有public修饰的方法或字段，然后自动序列化get前缀的方法，这个名字起的恰好被它识别了
        @JsonIgnore
        // 生成合并后的明细字符串（用于Excel导出）
        public String getCombinedDetails() {
                if (details == null || details.isEmpty()) {
                        return "";
                }
                return details.stream()
                        .map(d -> String.format("%s ×%d(单价¥%.2f)", d.getBookName(), d.getQuantity(), d.getPrice()))
                        .collect(Collectors.joining("\n")); // 用换行符分隔多个商品
        }
}
